"""
闭包

概念：
    在函数嵌套下，内部函数使用外部函数的变量，并且外部函数返回了内部函数，我们把这个使用外部函数变量的内部函数称为闭包。

闭包的构成条件：
    1.出现函数嵌套（函数里面再定义函数）
    2.内部函数使用外部函数的变量（包括外部函数的形参）
    3.外部函数返回了内部函数

结论：
    1.调用闭包相当于调用内部函数
    2.闭包可以对外部函数的变量进行保存

实现闭包的标准格式：
        # 外部函数
        def test1(a):
            b = 10
            # 内部函数
            def test2():
            # 内部函数使用了外部函数的变量或者参数
            print(a, b)
        # 返回内部函数，这里返回的内部函数就是闭包
        return test2
"""


# 外部函数
def func_out(num1):
    # 内部函数
    def func_inner(num2):
        # 内部函数使用了外部函数的变量(num1)
        num = num1 + num2
        print("结果是:", num)

    # 外部函数返回了内部函数, 这里返回的就是闭包
    return func_inner


# 创建闭包
f = func_out(10)
# 执行闭包
f(1)
f(2)
